﻿/**
 * Create in 2012-4-3.
 */
package kit4j.common.task;

import kit4j.common.task.event.TaskProgressRateChangeListener;

/**
 * 有任务进度值的任务接口。
 * 
 * @author MiniKnife
 *
 */
public interface ProgressionalTask extends Task {
	
	/**
	 * 添加指定的任务进度变化监听器，以接收该任务的任务进度变化事件。
	 * @param listener 要添加的任务进度变化监听器
	 */
	public void addTaskProgressRateChangeListener(TaskProgressRateChangeListener listener);
	
	/**
	 * 移除指定的任务进度变化监听器，以便它不再接收该任务的任务进度变化事件。
	 * @param listener 要移除的任务进度变化监听器
	 */
	public void removeTaskProgressRateChangeListener(TaskProgressRateChangeListener listener);
	
	/**
	 * @return 在该任务上注册的所有任务进度变化监听器组成的数组。
	 */
	public TaskProgressRateChangeListener[] getTaskProgressRateChangeListeners();

	/**
	 * @return 任务长度。如果长度未知，则返回-1。
	 */
	public long getTaskLength();
	
	/**
	 * @return 当前任务进度。
	 */
	public long getCurrentTaskProgressRate();
}
